/*
 * @作者: 沙昊
 * @邮箱: shahao@zju.edu.cn
 * @功能: 
 * @包含算法: 
 * Copyright (c) 2023 by 沙昊, All Rights Reserved. 
 */
/*
 * @作者: 沙昊
 * @邮箱: shahao@zju.edu.cn
 * @功能: 
 * @包含算法: 
 * Copyright (c) 2023 by 沙昊, All Rights Reserved. 
 */
/**
 * 
 * 543. 二叉树的直径
简单
1.4K
相关企业
给你一棵二叉树的根节点，返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。
 * 
 * 
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
private:
    int result = 0;
    int getdepth(TreeNode* node) {

        if(node==nullptr) return 0;
        // if (node->left == NULL && node->right == NULL) return ;
        // depth += 1;        
        int left_subtree_depth = getdepth(node->left);
        int right_subtree_depth = getdepth(node->right);
        result = max(result,(left_subtree_depth+right_subtree_depth));
        return max(left_subtree_depth,right_subtree_depth)+1;
    }
public:
    int diameterOfBinaryTree(TreeNode* root) {

        getdepth(root);
        
        return result;
    }
};